package cn.bincker.mybatis.encrypt.core;

import cn.bincker.mybatis.encrypt.entity.EncryptProperty;

public interface EncryptCache<T> {
    /**
     * 判断是否支持该类型的解密缓存,建议一个缓存对应一个类的一个字段
     * @param property 属性描述
     */
    boolean support(EncryptProperty property);

    /**
     * 获取缓存
     * @param target 属性所属对象
     * @return 解密后的原始数据
     */
    Object get(EncryptProperty property, T target);

    /**
     * 推入缓存
     * @param target 属性所属对象
     * @param value 解密后的原始数据
     */
    void put(EncryptProperty property, T target, Object value);
}
